Shader "XC/WarFogStatic"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags
        {
            "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Overlay"
        }
//        Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
        ZWrite Off
        ZTest Always
        ColorMask RGBA
        Pass
        {
            HLSLPROGRAM
            #pragma target 3.5
            #pragma vertex vert
            #pragma fragment frag

            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            TEXTURE2D_FLOAT(_MainTex);
            SAMPLER(my_linear_clamp_sampler);
            
            // float4 _MainTex_TexelSize;
            // sampler2D _MainTex;

            // 模糊效果
            // float4 BilinearSample(sampler2D tex, float2 uv)
            // {
            //     // 获取UV坐标的整数部分和小数部分
            //     float2 texSize = float2(600, 400); // 获取纹理大小
            //     float2 uvFloor = floor(uv * texSize); // 获取UV的整数部分
            //     float2 uvFrac = frac(uv * texSize); // 获取UV的小数部分
            //
            //     // 采样四个相邻的像素
            //     float4 p00 = tex2D(tex, (uvFloor + float2(0.0, 0.0)) / texSize);
            //     float4 p10 = tex2D(tex, (uvFloor + float2(1.0, 0.0)) / texSize);
            //     float4 p01 = tex2D(tex, (uvFloor + float2(0.0, 1.0)) / texSize);
            //     float4 p11 = tex2D(tex, (uvFloor + float2(1.0, 1.0)) / texSize);
            //
            //     // 对四个像素进行双线性插值
            //     float4 lerpX1 = lerp(p00, p10, uvFrac.x); // 水平插值
            //     float4 lerpX2 = lerp(p01, p11, uvFrac.x); // 水平插值
            //     return lerp(lerpX1, lerpX2, uvFrac.y); // 垂直插值
            // }

            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = TransformObjectToHClip(v.vertex.xyz);
                o.uv = v.uv;
                return o;
            }

            float4 frag(v2f i) : SV_Target
            {
                // sample the texture
                float4 col = SAMPLE_TEXTURE2D(_MainTex, my_linear_clamp_sampler, i.uv);
                return col.b;
                // float4 col = BilinearSample(_MainTex, i.uv);
                // return float4(0, 0, 0, (1 - col.b) * 0.55);
            }
            ENDHLSL
        }
    }
}
